/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.going.logica;

import co.com.going.modelo.Programa;
import co.com.going.persistencia.IDAOprograma;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author Olguita
 */
@Stateless
public class LogicaPrograma implements ILogicaPrograma {

   @EJB
    private IDAOprograma iDAOprograma;
    
    @Override
    public void crearPrograma(Programa programa) throws Exception {
        
        if(programa==null){
        
            throw new Exception("El programa no puede ser Vacio");
        
        }
        
        Programa objPrograma= iDAOprograma.buscarProgramaPorNombre(programa.getNombrePrograma());
        
        if(objPrograma!=null){
        
        
            throw new Exception("El Programa ya Existe");
        
        }
        
       Programa objPrograma2=iDAOprograma.BuscarProgramaPorId(programa.getCodPrograma());
       
       if(objPrograma2!=null){
        
        
            throw new Exception("El codigo del Programa proporcionado ya se encuentraen Uso");
         
        }
       
       if(programa.getNombrePrograma()==null||programa.getNombrePrograma().equals("")){
            
            throw new Exception("El Nombre no puede ser Vacio");
            
        }
        
         if(programa.getCodPrograma()==null||programa.getCodPrograma()==0){
            
            throw new Exception("Debe de Proporcionarse un codigo para identificar El Programa");
            
        }
    
        
        iDAOprograma.crearPrograma(programa);
        
    }

    @Override
    public void eliminarPrograma(Programa programa) throws Exception {
        
        if(programa==null){
        
            throw new Exception("El programa no puede ser Vacio");
        
        }
        
        Programa objPrograma= iDAOprograma.buscarProgramaPorNombre(programa.getNombrePrograma());
        
        if(objPrograma==null){
        
        
            throw new Exception("El Programa No Existe");
        
        }
        
        iDAOprograma.eliminarPrograma(objPrograma);
        
    }

    @Override
    public void modificarPrograma(Programa programa) throws Exception {
        
        if(programa==null){
        
            throw new Exception("El programa no puede ser Vacio");
        
        }
        
        Programa objPrograma= iDAOprograma.buscarProgramaPorNombre(programa.getNombrePrograma());
        
        if(objPrograma!=null){
                
            throw new Exception("El Nombre del Programa ya Existe");
        
        }
        
               
       if(programa.getNombrePrograma()==null||programa.getNombrePrograma().equals("")){
            
            throw new Exception("El Nombre no puede ser Vacio");
            
        }
        
        if(programa.getCodPrograma()==null||programa.getCodPrograma()==0){
            
            throw new Exception("Debe de Proporcionarse un codigo para identificar El Programa");
            
        }
         
        
        iDAOprograma.modificarPrograma(programa);
        
    }

    @Override
    public Programa buscarProgramaPorNombre(String nombre) throws Exception {
        
        if(nombre==null||nombre.equals("")){
        
            throw new Exception("Ingrese Un nombre Para realizar la busqueda");
        
        }
        
        return iDAOprograma.buscarProgramaPorNombre(nombre);
        
    }

    @Override
    public Programa BuscarProgramaPorId(Long IdPrograma) throws Exception {
        
        if(IdPrograma==null||IdPrograma==0){
        
            throw new Exception("Ingrese Un Id Para realizar la busqueda");
        
        }
        
        return iDAOprograma.BuscarProgramaPorId(IdPrograma);
        
    }

    @Override
    public List<Programa> programas() throws Exception {
        
        return iDAOprograma.programas();
        
    }
    
}
